I'm a software engineer with a focus on web browser development and web standards. Since 2014, I've worked at Google on the Chrome team to make the web more capable.
You may know me from my work on JavaScript promises and modules, streams and other WHATWG standards, custom elements, or the navigation API. Most recently I've been working on speculative loading for web performance, and built-in AI APIs to expose the browser or OS's AI models to web developers.
Outside of work, I'm passing the time before the singularity hits by exploring Tokyo, where I moved in 2022. I spend a lot of time trying to learn Japanese, as well as keeping up with the latest in AI capabilities and safety research. I also maintain the jsdom open-source project. I occasionally dream of making time to go back to physics research.
Latest
-
Spaced Repetition Systems Have Gotten Way Better
Spaced repetition systems are a well-known way to efficiently learn material. Recent innovations have applied machine learning to greatly improve their scheduling.
-
Learning Japanese Part-Time
After 6.5 years of studying Japanese, and only getting moderately far, I reflect on how to most effectively study a second language while only being able to spare an hour or two a day.
-
ChatGPT Is Not a Blurry JPEG of the Web
Are LLMs just compressed representations of their training data, or something more? The "simulators" hypothesis proposes that they're much more like a human imagination, instantiating simulacra of various entities.
Favorites
-
Mathematical Consciousness
What if your mind is nothing more than evolving data—and what if the cosmos is nothing more than a static mathematical object?
-
Explaining Away the Web's Magic
An introduction to the extensible web manifesto, a web API design philosophy that espouses exposing primitives and letting developers build high-level abstractions that are competitive with those shipped with the browser.
-
You're Missing the Point of Promises
The original essay that helped promises win over callbacks in the JavaScript ecosystem.
Web Standards
-
Reading from Sockets
Designing JavaScript streams APIs for network sockets, on top of non-blocking syscalls, leads us to the concept of push vs. pull sources.
-
Reading from Files
Designing JavaScript streams APIs for file I/O leads us to consider bring-your-own-buffer APIs and how to avoid race conditions.
-
Byte Sources: Introduction
The intro to a short series of posts explaining some design decisions behind the web streams APIs, and how they abstract over underlying I/O interfaces.
JavaScript & Node.js
-
ES6 Iterators, Generators, and Iterables
A reference guide for JavaScript iterator and generator terminology, from back when they were just starting to see implementations in JavaScript engines.
-
Strict Mode = Static Scoping
JavaScript strict mode has a lesser-known benefit in how it brings sanity to variable scoping.
-
Peer Dependencies
I added the original peer dependencies feature to npm 1.2.10, to allow plugins to express what versions of a host package they're compatible with.